package com.geeklan.smart.widget;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;

import com.contrarywind.view.WheelView;
import com.geeklan.smart.R;

public class DateWheelView extends WheelView {
    private String unit = ""; // 默认单位
    private Paint unitPaint;  // 用于绘制单位的 Paint
    public DateWheelView(Context context) {
        super(context);
        init();
        initConfig();
    }

    public DateWheelView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
        initConfig();
    }

    private void initConfig() {
        setTextColorOut(getResources().getColor(R.color.color_999999));   // 非选中项文字颜色
        setTextColorCenter(getResources().getColor(R.color.color_9ccc9c));
        setTextSize(getResources().getDimension(com.smart.base.R.dimen.sp_8));
        setItemsVisibleCount(7);
        setAlphaGradient(false);// 禁用文字缩放和透明度渐变
        setDividerColor(getResources().getColor(R.color.color_f5f5f5));       // 设置分隔线颜色
        setDividerWidth(1);               // 设置分隔线宽度
        setLineSpacingMultiplier(2f);   // 设置行间距
        setDividerType(WheelView.DividerType.WRAP);
    }

    private void init() {
        unitPaint = new Paint();
        unitPaint.setColor(getResources().getColor(R.color.color_9ccc9c)); // 默认黑色
        unitPaint.setTextSize(spToPx(getResources().getDimension(com.smart.base.R.dimen.sp_6))); // 设置字体大小
        unitPaint.setAntiAlias(true);
    }

    /**
     * 设置单位
     */
    public void setUnit(String unit) {
        this.unit = unit;
        invalidate(); // 重绘
    }

    /**
     * 重写 onDraw，添加单位到中间项
     */
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        if (unit.isEmpty()) {
            return;
        }

        // 获取中间选中的项的坐标
        int centerIndex = getCurrentItem();
        String selectedItem = getAdapter().getItem(centerIndex).toString();

        // 获取中间项的绘制区域
        float itemHeight = getItemHeight();
        float centerY = getHeight() / 2f; // 中间行的 Y 坐标

        // 计算单位的 X 坐标（紧接在中间项文字后面）
        float textWidth = unitPaint.measureText(selectedItem);
        float unitX = getWidth() / 2f + textWidth / 2f + 50; // 10 是间距

        // 绘制单位
        canvas.drawText(unit, unitX, centerY + (unitPaint.getTextSize() / 2) - 2, unitPaint);
    }


    /**
     * 工具方法：SP 转 PX
     */
    private int spToPx(float sp) {
        float scale = getResources().getDisplayMetrics().scaledDensity;
        return (int) (sp * scale + 0.5f);
    }
}
